package com.study.bigdata.spark.core.rdd.instance

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Scala02_RDD_Instance_File_Partition {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("WordCount")
    val sc = new SparkContext(conf)

    // TODO 从文件中创建RDD
    // textFile方法可以在读取文件时，设定分区
    // 如果不设定，存在默认值
    // math.min(defaultParallelism, 2
    // 第二个参数表示最小分区数，所以最终分区数量可以大于这个值
    val rdd = sc.textFile("data/word.txt",2)

    // TODO 1.spark读取文件其实底层就是hadoop读取文件
    // TODO 2.spark的分区数量，来自hadoop读取文件的切片
    // 想要切片的数量 numSplit 2
    // totalSize 7  字节大小
    // 预计每个分区字节大小goalSize = totalSize / numSplit 7 / 2 = 3
    // 7 / 3 = 2 ....1 = 2 + 1 = 3

    rdd.saveAsTextFile("output")

    sc.stop()

  }

}
